diff --git a/django/db/models/lookups.py b/django/db/models/lookups.py
index 2683d8971a..e7a2212b6c 100644
--- a/django/db/models/lookups.py
+++ b/django/db/models/lookups.py
@@ -1,8 +1,10 @@
 import itertools
 import math
+import uuid
 from copy import copy
 
 from django.core.exceptions import EmptyResultSet
+from django.db import connection
 from django.db.models.expressions import Case, Exists, Func, Value, When
 from django.db.models.fields import (
     BooleanField, DateTimeField, Field, IntegerField,
@@ -426,6 +428,19 @@ class Contains(PatternLookup):
 class IContains(Contains):
     lookup_name = 'icontains'
 
+    def process_rhs(self, compiler, connection):
+        rhs, params = super().process_rhs(compiler, connection)
+        if params and connection.vendor == 'oracle':
+            value = params[0]
+            if isinstance(value, uuid.UUID):
+                value = str(value)
+                if '-' not in value:
+                    value = uuid.UUID(value).hex
+                else:
+                    value = uuid.UUID(value).urn[9:]
+            params[0] = self.param_pattern % connection.ops.prep_for_like_query(value)
+        return rhs, params
+
 
 @Field.register_lookup
 class StartsWith(PatternLookup):
